package com.sunmnet.j2ee.service.powerdb.designer;

import com.sunmnet.j2ee.core.pub.QueryFilter;
import com.sunmnet.j2ee.entity.powerdb.designer.Entity;
import com.sunmnet.j2ee.entity.powerdb.designer.Field;
import com.sunmnet.j2ee.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * @author 蔡岳衡 on 2016/8/8.
 */
public interface FieldService extends BaseService<Field,Long> {

	int checkRepeat(Field field);

	/**
	 * 通过实体编号查找字段
	 * @param entityId
	 * @param versionId
	 * @return
	 */
	List<Field> getFields(Long entityId, Long versionId);

	/**
	 * 通过模块Id和版本编号查找字段
	 *
	 * @param moduleId
	 * @param versionId
	 * @return
	 */
	List<Field> getFieldsByModuleId(Long moduleId, Long versionId);

	/**
	 * 拷贝字段成新版本
	 * @param list 原字段链表
	 * @param copyedEntitys 实体编号对应关系map
	 * @param versionId 版本编号
	 * @param newModuleId 新模块编号
	 * @return Map<Long,Long> 原字段编号对应新版本字段表单关系map
	 */
	Map<Long, Long> copyFields(List<Field> list, Map<Long, Long> copyedEntitys, Long versionId, Long newModuleId);

	/**
	 * 保存字段顺序
	 *
	 * @param ids 所有字段id顺序
	 * @throws Exception
	 */
	void saveFieldSort(String ids) throws Exception;

	List findFields(QueryFilter filter);
}
